﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BL;
using BE;
using System.Data;
using System.Text;
using System.IO;
using System.Web.UI.HtmlControls;
using System.Net;
using System.Diagnostics;
using System.Drawing;

namespace UI.Sistemas
{
    public partial class FrmMatricularAlumnosMoodle : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack) {
                LLenarComboPeriodos();
                btnConfirmar.Enabled = false;

            }
        }


        private void LLenarComboPeriodos()
        {
            MatricularAlumnos_BL cp = new MatricularAlumnos_BL();
            List<Periodo> lista = cp.ObtenerPeriodos();
            comboSemestre.DataSource = lista;
            comboSemestre.DataTextField = "Semestre";
            comboSemestre.DataValueField = "ID";
            comboSemestre.DataBind();

            LLenarComboEspecialidad();
        }


        private void LLenarComboEspecialidad()
        {
            MatricularAlumnos_BL cp = new MatricularAlumnos_BL();
            String semestre = comboSemestre.SelectedItem.Text;
            DataTable lista = cp.ListaEspecialidadNomina(semestre);
            comboEspecialidad.DataSource = lista;
            comboEspecialidad.DataTextField = "NombreGrupo";
            comboEspecialidad.DataValueField = "GRUPO";
            comboEspecialidad.DataBind();

            comboEspecialidad.Items.Insert(0, "--Todos--");

            LLenarComboCiclo();
        }


        private void LLenarComboCiclo()
        {
            MatricularAlumnos_BL cp = new MatricularAlumnos_BL();
            String semestre = comboSemestre.SelectedItem.Text;
            String especialidad = comboEspecialidad.SelectedItem.Value;

            DataTable lista = cp.ListaCiclosNomina(semestre,especialidad);
            comboCiclo.DataSource = lista;
            comboCiclo.DataTextField = "NombreCiclo";
            comboCiclo.DataValueField = "Id_Ciclos";
            comboCiclo.DataBind();

            comboCiclo.Items.Insert(0, "--Todos--");
            LLenarComboAlumno();
        }


        private void LLenarComboAlumno()
        {
            MatricularAlumnos_BL cp = new MatricularAlumnos_BL();
            String semestre = comboSemestre.SelectedItem.Text;
            String especialidad = comboEspecialidad.SelectedItem.Value;
            String ciclo = comboCiclo.SelectedItem.Value;

            DataTable lista = cp.ListaAlumnosNomina(semestre, especialidad,ciclo);
            comboAlumno.DataSource = lista;
            comboAlumno.DataTextField = "Nombres";
            comboAlumno.DataValueField = "COD_ALUMNO";
            comboAlumno.DataBind();
            comboAlumno.Items.Insert(0, "--Todos--");
        }




        protected void btnGenerar_Click(object sender, EventArgs e)
        {
            LabelError.Text = "";

            LabelPaso1.Text = "";
            LabelPaso2.Text = "";
            LabelPaso3.Text = "";

            try
            {
                StringBuilder sb= GenerarArchivoPlano();
                LabelPaso1.Text = "OK";

                SubiendoServidor(sb);
                LabelPaso2.Text = "OK";

                LabelPaso3.Text = "OK";

                btnConfirmar.Enabled = true;

            }
            catch (Exception ex)
            {
                LabelError.Text = ex.Message;
            }

        }



        private void GenerarConsultaReporteComprobanteVenta()
        {
            LabelError.Text = "";
            try
            {
                String semestre = comboSemestre.SelectedItem.Text;
                String grupo = comboEspecialidad.SelectedItem.Value;
                String ciclo = comboCiclo.SelectedItem.Value;
                String codigoAlumno = comboAlumno.SelectedItem.Value;
                String nombreGrupo = comboEspecialidad.SelectedItem.Text;
                String NombreCiclo = comboCiclo.SelectedItem.Text;




                MatricularAlumnos_BL matriculabl = new MatricularAlumnos_BL();
                DataTable data = matriculabl.GenerarCSV(semestre, grupo, ciclo, codigoAlumno, nombreGrupo, NombreCiclo);

                if (data.Rows.Count > 0)
                {
                    StringBuilder sb = new StringBuilder();
                    StringWriter sw = new StringWriter(sb);
                    HtmlTextWriter htw = new HtmlTextWriter(sw);
                    Page pagina = new Page();
                    HtmlForm form = new HtmlForm();
                    GridView dg = new GridView();
                    dg.EnableViewState = false;
                    dg.DataSource = data;
                    dg.DataBind();
                    pagina.EnableEventValidation = false;
                    pagina.DesignerInitialize();
                    pagina.Controls.Add(form);
                    form.Controls.Add(dg);
                    pagina.RenderControl(htw);
                    Response.Clear();
                    Response.Buffer = true;
                    Response.ContentType = "application/vnd.ms-excel";
                    Response.AddHeader("Content-Disposition", "attachment;filename=REPORTE.xls");
                    Response.Charset = "UTF-8";
                    Response.ContentEncoding = Encoding.Default;
                    Response.Write(sb.ToString());
                    Response.End();
                }

            }
            catch (Exception ex)
            {
                LabelError.Text = ex.Message;
            }
        }


        private StringBuilder GenerarArchivoPlano() {
            try
            {
                StringBuilder sb = new StringBuilder();

                String semestre = comboSemestre.SelectedItem.Text;
                String grupo = comboEspecialidad.SelectedItem.Value;
                String ciclo = comboCiclo.SelectedItem.Value;
                String codigoAlumno = comboAlumno.SelectedItem.Value;
                String nombreGrupo = comboEspecialidad.SelectedItem.Text;
                String NombreCiclo = comboCiclo.SelectedItem.Text;

                MatricularAlumnos_BL matriculabl = new MatricularAlumnos_BL();
                DataTable dt = matriculabl.GenerarCSV(semestre, grupo, ciclo, codigoAlumno, nombreGrupo, NombreCiclo);



                foreach (DataRow row in dt.Rows)
                {
                    IEnumerable<string> fields = row.ItemArray.Select(field =>
                    string.Concat(field.ToString().Replace("\"", "\"\"")));
                    sb.AppendLine(string.Join(",", fields));
                }
                return sb;

            }
            catch (Exception ex)
            {
                LabelPaso1.Text = "Error :"+ex.Message;
                throw ex;
            }
        }

        private void SubiendoServidor(StringBuilder sb) {
            try
            {
                ftp clienteftp = new ftp();
                clienteftp.delete("moodledata/1/enrolments.txt");
                clienteftp.SubirConData("moodledata/1/enrolments.txt", sb);
            }
            catch (Exception ex)
            {
                LabelPaso2.Text = ex.Message;
                throw ex;
            }
        }


        private void GenerarCSV()
        {


            StringBuilder sb = new StringBuilder();

            String semestre = comboSemestre.SelectedItem.Text;
            String grupo = comboEspecialidad.SelectedItem.Value;
            String ciclo = comboCiclo.SelectedItem.Value;
            String codigoAlumno = comboAlumno.SelectedItem.Value;
            String nombreGrupo = comboEspecialidad.SelectedItem.Text;
            String NombreCiclo = comboCiclo.SelectedItem.Text;

            MatricularAlumnos_BL matriculabl = new MatricularAlumnos_BL();
            DataTable dt = matriculabl.GenerarCSV(semestre, grupo, ciclo, codigoAlumno, nombreGrupo, NombreCiclo);

            

            foreach (DataRow row in dt.Rows)
            {
                IEnumerable<string> fields = row.ItemArray.Select(field =>
                string.Concat( field.ToString().Replace("\"", "\"\"")));
                sb.AppendLine(string.Join(",", fields));
            }



            //using (StreamWriter outfile = new StreamWriter(mydocpath, true))
            //{
            //    outfile.Write(sb.ToString());
            //    outfile.Flush();
            //}



            //string strDesktop = System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
            //string DocumentoDestino = strDesktop + "\\Enviroment.txt";
            //string DocumentoFuente = mydocpath;

            //Process.Start(DocumentoFuente);

            ftp clienteftp=new ftp();
            //clienteftp.download("moodledata/10/images.jpg", strDesktop+"copias.jpg");
            //clienteftp.upload("moodledata/1/enrolments.txt", DocumentoFuente);

            clienteftp.delete("moodledata/1/enrolments.txt");

            clienteftp.SubirConData("moodledata/1/enrolments.txt", sb);



      /*
            Response.Clear();
            Response.ContentType = "application/txt";
            Response.AddHeader("Content-Disposition", "attachment; filename=" + "MI PRUEBA PEEE.txt");
            Response.WriteFile(mydocpath);
            Response.End();


            WebClient objWebClient = new WebClient();
            objWebClient.Credentials = System.Net.CredentialCache.DefaultCredentials;
            objWebClient.DownloadFile(DocumentoFuente, DocumentoDestino);

            sb.Clear();*/
        }

        protected void btnConsultar_Click(object sender, EventArgs e)
        {

        }

        protected void btnConfirmar_Click(object sender, EventArgs e)
        {

            Response.Write("<script>");
            Response.Write("window.open('http://www.ipnm.edu.pe/campusvirtual/admin/cronMatricularAlumnosDesdeTxt.php','_blank')");
            Response.Write("</script>");

        }

        protected void comboEspecialidad_SelectedIndexChanged(object sender, EventArgs e)
        {
            LLenarComboCiclo();
        }

        protected void comboCiclo_SelectedIndexChanged(object sender, EventArgs e)
        {
            LLenarComboAlumno();
        }

    

    

    }
}